import java.util.Arrays;

/*
题目描述：扑克牌中的顺子
抽五张牌，判断是否为顺子， 0 表示任意数字
方法：
排序，计算 0 的个数，统计空缺的个数，如果 0 能够填不上空缺，返回 true，否则为 false
 */
public class E61 {
    public static void main(String[] args) {
        int[] numbers = {3,1,4,5,0};
        System.out.println(isContinuous(numbers));
    }

    public static boolean isContinuous(int [] numbers) {
        if(numbers == null || numbers.length <= 0){
            return false;
        }

        Arrays.sort(numbers);


        int numOfZero = 0;
        int numOfGap = 0;

        //统计 0 的个数
        for(int i = 0; i < numbers.length && numbers[i] == 0; i++){
            numOfZero ++;
        }

        //统计数组中的间隔数目
        int small = numOfZero;
        int big = small + 1;
        while(big < numbers.length){
            //两个数相等，是对子，不能构成顺子
            if(numbers[small] == numbers[big]){
                return false;
            }

            numOfGap += numbers[big] - numbers[small] - 1;
            small = big;
            big ++;
        }

        return (numOfZero - numOfGap) >= 0;
    }

}
